home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
QuickTime 1.0 for Developers
/
QuickTime 1.0 for Developers.iso
/
Programming Stuff
/
Interfaces
/
Movies Interfaces
/
ImageCompression.p
< prev
next >
Wrap
Text File
|
1991-09-06
|
22KB
|
465 lines
{
Created: Tuesday, August 13, 1991 at 4:31 PM
ImageCompression.p
Pascal Interface to the Macintosh Libraries
Copyright Apple Computer, Inc. 1991
All rights reserved
}
{$IFC UNDEFINED UsingIncludes}
{$SETC UsingIncludes := 0}
{$ENDC}
{$IFC NOT UsingIncludes}
UNIT ImageCompression;
INTERFACE
{$ENDC}
{$IFC UNDEFINED UsingImageCompression}
{$SETC UsingImageCompression := 1}
{$I+}
{$SETC ImageCompressionIncludes := UsingIncludes}
{$SETC UsingIncludes := 1}
{$IFC UNDEFINED UsingQuickDraw}
{$I $$Shell(PInterfaces)QuickDraw.p}
{$ENDC}
{$IFC UNDEFINED UsingQDOffscreen}
{$I $$Shell(PInterfaces)QDOffscreen.p}
{$ENDC}
{$IFC UNDEFINED UsingTypes}
{$I $$Shell(PInterfaces)Types.p}
{$ENDC}
{$IFC UNDEFINED UsingComponents}
{$I $$Shell(PInterfaces)Components.p}
{$ENDC}
{$SETC UsingIncludes := ImageCompressionIncludes}
CONST
gestaltCompressionMgr = 'icmp';
{ These are the bits that are set in the Component flags, and also in the codecInfo struct. }
codecInfoDoes1 = $1; { codec can work with 1-bit pixels }
codecInfoDoes2 = $2; { codec can work with 2-bit pixels }
codecInfoDoes4 = $4; { codec can work with 4-bit pixels }
codecInfoDoes8 = $8; { codec can work with 8-bit pixels }
codecInfoDoes16 = $10; { codec can work with 16-bit pixels }
codecInfoDoes32 = $20; { codec can work with 32-bit pixels }
codecInfoDoesDither = $40; { codec can do ditherMode }
codecInfoDoesStretch = $80; { codec can stretch to arbitrary sizes }
codecInfoDoesShrink = $100; { codec can shrink to arbitrary sizes }
codecInfoDoesMask = $200; { codec can mask to clipping regions }
codecInfoDoesTemporal = $400; { codec can handle temporal redundancy }
codecInfoDoesDouble = $800; { codec can stretch to double size exactly }
codecInfoDoesQuad = $1000; { codec can stretch to quadruple size exactly }
codecInfoDoesHalf = $2000; { codec can shrink to half size }
codecInfoDoesQuarter = $4000; { codec can shrink to quarter size }
codecInfoDoesRotate = $8000; { codec can rotate on decompress }
codecInfoDoesHorizFlip = $10000; { codec can flip horizontally on decompress }
codecInfoDoesVertFlip = $20000; { codec can flip vertically on decompress }
codecInfoDoesSkew = $40000; { codec can skew on decompress }
codecInfoDoesBlend = $80000; { codec can blend on decompress }
codecInfoDoesWarp = $100000; { codec can warp arbitrarily on decompress }
codecInfoDoesRecompress = $200000; { codec can recompress image without accumulating errors }
codecInfoDepth1 = $1; { compressed data at 1 bpp depth available }
codecInfoDepth2 = $2; { compressed data at 2 bpp depth available }
codecInfoDepth4 = $4; { compressed data at 4 bpp depth available }
codecInfoDepth8 = $8; { compressed data at 8 bpp depth available }
codecInfoDepth16 = $10; { compressed data at 16 bpp depth available }
codecInfoDepth32 = $20; { compressed data at 32 bpp depth available }
codecInfoDepth24 = $40; { compressed data at 24 bpp depth available }
codecInfoDepth33 = $80; { compressed data at 1 bpp monochrome depth available }
codecInfoDepth34 = $100; { compressed data at 2 bpp grayscale depth available }
codecInfoDepth36 = $200; { compressed data at 4 bpp grayscale depth available }
codecInfoDepth40 = $400; { compressed data at 8 bpp grayscale depth available }
codecInfoStoresClut = $800; { compressed data can have custom cluts }
codecFlagUseImageBuffer = $1; { (input) allocate buffer for whole image on decompress sequence }
codecFlagUseScreenBuffer = $2; { (input) allocate buffer for screen on decompress sequence for faster updates }
codecFlagUpdatePrevious = $4; { (input) udate previous buffer on compress sequence }
codecFlagNoScreenUpdate = $8; { (input) dont update screen, but do update image buffer if allocated }
codecFlagWasCompressed = $10; { (input) hint to compressor that image was previously compressed }
codecFlagDontOffscreen = $20; { return error instead of automatically going offscreen }
codecFlagUpdatePreviousComp = $40; { (input) udate previous buffer on compress sequence }
codecFlagForceKeyFrame = $80; { when sent to CompressSequenceFrame, forces that frame to be a key frame }
codecFlagUsedImageBuffer = $8000; { (output) indicates that image buffer was used on this decompress sequence }
codecErr = -8960; { the codec returned an error }
noCodecErr = -8961; { the specified codec could not be found }
codecUnimpErr = -8962; { this feature is not implemented by the specified codec }
codecSizeErr = -8963;
codecScreenBufErr = -8964; { the screen buffer could not be allocated }
codecImageBufErr = -8965; { the image buffer could not be allocated }
codecSpoolErr = -8966; { the compressed data must be in memory (spooling did not work) }
codecAbortErr = -8967; { the operation was aborted by the progress proc }
codecWouldOffscreenErr = -8968; { an offscreen access would have been used, but wasn't allowed because codecFlagDontOffscreen was set }
codecBadDataErr = -8969; { compressed data was found to have inconsistencies }
codecDataVersErr = -8970; { compressed data was of a format version that codec couldn't handle }
codecMinimumDataSize = 16384; { The minimum data size for spooling in or out data }
compressorComponentType = 'imco'; { the type for "Components" which compress images }
decompressorComponentType = 'imdc'; { the type for "Components" which decompress images }
TYPE
CompressorComponent = Component; { a Component which compresses images }
DecompressorComponent = Component; { a Component which decompresses images }
CodecComponent = Component; { a Component which decompresses or compresses images }
sBoolean = INTEGER; { to make sure stack frames are right }
CodecType = LONGINT; { type descriptor for codecs i.e: 'appl','jpeg','rle ' }
CodecFlags = INTEGER; { flags for codec manager calls }
CodecQ = LONGINT;
DataProcPtr = OSErr;
FlushProcPtr = OSErr;
CONST
codecCompletionSource = 1;
codecCompletionDest = 2;
TYPE
CompletionProcPtr = ProcPtr;
CONST
codecProgressOpen = 0;
codecProgressUpdatePercent = 1;
codecProgressClose = 2;
TYPE
ProgressProcPtr = ProcPtr;
ImageSequence = LONGINT;
ProgressProcRecordPtr = ^ProgressProcRecord;
ProgressProcRecord = RECORD
progressProc: ProgressProcPtr;
progressRefCon: LONGINT;
END;
CompletionProcRecordPtr = ^CompletionProcRecord;
CompletionProcRecord = RECORD
completionProc: CompletionProcPtr;
completionRefCon: LONGINT;
END;
DataProcRecordPtr = ^DataProcRecord;
DataProcRecord = RECORD
dataProc: DataProcPtr;
dataRefCon: LONGINT;
END;
FlushProcRecordPtr = ^FlushProcRecord;
FlushProcRecord = RECORD
flushProc: FlushProcPtr;
flushRefCon: LONGINT;
END;
{
The ImageDescription is private data which is produced when an image or sequence
is compressed. It fully describes the format of the compressed data.}
ImageDescriptionPtr = ^ImageDescription;
ImageDescriptionHandle = ^ImageDescriptionPtr;
ImageDescription = RECORD
idSize: LONGINT; { total size of ImageDescription including extra data ( CLUTs and other per sequence data }
cType: CodecType; { what kind of codec compressed this data }
resvd1: LONGINT; { reserved for apple use }
resvd2: INTEGER; { reserved for apple use }
dataRefIndex: INTEGER; { set to zero }
version: INTEGER; { which version is this data }
revisionLevel: INTEGER; { what version of that codec did this }
vendor: LONGINT; { whose codec compressed this data }
temporalQuality: CodecQ; { what was the temporal quality factor }
spatialQuality: CodecQ; { what was the spatial quality factor }
width: INTEGER; { how many pixels wide is this data }
height: INTEGER; { how many pixels high is this data }
hRes: Fixed; { horizontal resolution }
vRes: Fixed; { vertical resolution }
dataSize: LONGINT; { if known, the size of data for this image descriptor }
frameCount: INTEGER; { number of frames this description applies to }
name: ARRAY [0..31] OF CHAR; { name of codec ( in case not installed ) }
depth: INTEGER; { what depth is this data (1-32) or ( 33-40 grayscale ) }
clutID: INTEGER; { clut id or if 0 clut follows or -1 if no clut }
END;
{
The CodecInfo is the information returned as the codecInfo struct by a codec Component
to the codec manager or to the caller. It is specific to the particular codec
implementation and not to the codec type.}
CodecInfo = RECORD
typeName: ARRAY [0..31] OF CHAR; { name of the codec type i.e.: 'Apple Image Compression' }
version: INTEGER; { version of the codec data that this codec knows about }
revisionLevel: INTEGER; { revision level of this codec i.e: 0x00010001 (1.0.1) }
vendor: LONGINT; { Maker of this codec i.e: 'appl' }
decompressFlags: LONGINT; { codecInfo flags for decompression capabilities }
compressFlags: LONGINT; { codecInfo flags for compression capabilities }
formatFlags: LONGINT; { codecInfo flags for compression format details }
compressionAccuracy: CHAR; { measure (1-255) of accuracy of this codec for compress (0 if unknown) }
decompressionAccuracy: CHAR; { measure (1-255) of accuracy of this codec for decompress (0 if unknown) }
compressionSpeed: INTEGER; { ( millisecs for compressing 320x240 on base mac II) (0 if unknown) }
decompressionSpeed: INTEGER; { ( millisecs for decompressing 320x240 on mac II)(0 if unknown) }
compressionLevel: CHAR; { measure (1-255) of compression level of this codec (0 if unknown) }
resvd: CHAR; { pad }
minimumHeight: INTEGER; { minimum height of image (block size) }
minimumWidth: INTEGER; { minimum width of image (block size) }
decompressPipelineLatency: INTEGER; { in milliseconds ( for asynchronous codecs ) }
compressPipelineLatency: INTEGER; { in milliseconds ( for asynchronous codecs ) }
privateData: LONGINT;
END;
{ Table used for fast dithering. }
DTabPtr = ^DitherTable;
DTabHandle = ^DTabPtr;
DitherTable = RECORD
tag: LONGINT;
seed: LONGINT;
reserved: LONGINT;
data: ARRAY [0..0] OF CHAR;
END;
{ Name list returned by GetCodecNameList. }
CodecNameSpec = RECORD
codec: CodecComponent;
cType: CodecType;
typeName: ARRAY [0..31] OF CHAR;
name: Handle;
END;
CodecNameSpecListPtr = ^CodecNameSpecList;
CodecNameSpecList = RECORD
count: INTEGER;
list: ARRAY [0..0] OF CodecNameSpec;
END;
{ Matrix stuff }
MatrixRecordPtr = ^MatrixRecord;
MatrixRecord = RECORD
matrix: ARRAY [0..2,0..2] OF Fixed;
END;
FixedPoint = RECORD
x: Fixed;
y: Fixed;
END;
FixedRect = RECORD
left: Fixed;
top: Fixed;
right: Fixed;
bottom: Fixed;
END;
FUNCTION CodecManagerVersion(VAR version: LONGINT): OSErr;
INLINE $7000+$0000,$AAA3;
FUNCTION GetCodecNameList(VAR list: CodecNameSpecListPtr;showAll: sBoolean): OSErr;
INLINE $7000+$0001,$AAA3;
FUNCTION GetCodecInfo(VAR info: CodecInfo;cType: CodecType;codec: CodecComponent): OSErr;
INLINE $7000+$0003,$AAA3;
FUNCTION GetMaxCompressionSize(src: PixMapHandle;VAR srcRect: Rect;colorDepth: INTEGER;
quality: CodecQ;cType: CodecType;codec: CompressorComponent;VAR size: LONGINT): OSErr;
INLINE $7000+$0004,$AAA3;
FUNCTION GetCompressionTime(src: PixMapHandle;VAR srcRect: Rect;colorDepth: INTEGER;
cType: CodecType;codec: CompressorComponent;VAR spatialQuality: CodecQ;
VAR temporalQuality: CodecQ;VAR compressTime: LONGINT): OSErr;
INLINE $7000+$0005,$AAA3;
FUNCTION CompressImage(src: PixMapHandle;VAR srcRect: Rect;quality: CodecQ;
cType: CodecType;desc: ImageDescriptionHandle;data: Ptr): OSErr;
INLINE $7000+$0006,$AAA3;
FUNCTION FCompressImage(src: PixMapHandle;VAR srcRect: Rect;colorDepth: INTEGER;
quality: CodecQ;cType: CodecType;codec: CompressorComponent;clut: CTabHandle;
flags: CodecFlags;bufferSize: LONGINT;flushProc: FlushProcRecordPtr;progressProc: ProgressProcRecordPtr;
desc: ImageDescriptionHandle;data: Ptr): OSErr;
INLINE $7000+$0007,$AAA3;
FUNCTION DecompressImage(data: Ptr;desc: ImageDescriptionHandle;dst: PixMapHandle;
VAR srcRect: Rect;VAR dstRect: Rect;mode: INTEGER;mask: RgnHandle): OSErr;
INLINE $7000+$0008,$AAA3;
FUNCTION FDecompressImage(data: Ptr;desc: ImageDescriptionHandle;dst: PixMapHandle;
VAR srcRect: Rect;matrix: MatrixRecordPtr;mode: INTEGER;mask: RgnHandle;
matte: PixMapHandle;VAR matteRect: Rect;accuracy: CodecQ;codec: DecompressorComponent;
bufferSize: LONGINT;dataProc: DataProcRecordPtr;progressProc: ProgressProcRecordPtr): OSErr;
INLINE $7000+$0009,$AAA3;
FUNCTION CompressSequenceBegin(VAR seqID: ImageSequence;src: PixMapHandle;
prev: PixMapHandle;VAR srcRect: Rect;VAR prevRect: Rect;colorDepth: INTEGER;
cType: CodecType;codec: CompressorComponent;spatialQuality: CodecQ;temporalQuality: CodecQ;
keyFrameRate: LONGINT;clut: CTabHandle;flags: CodecFlags;desc: ImageDescriptionHandle): OSErr;
INLINE $7000+$000A,$AAA3;
FUNCTION CompressSequenceFrame(seqID: ImageSequence;src: PixMapHandle;VAR srcRect: Rect;
flags: CodecFlags;data: Ptr;VAR dataSize: LONGINT;VAR similarity: CHAR;
asyncCompletionProc: CompletionProcRecordPtr): OSErr;
INLINE $7000+$000B,$AAA3;
FUNCTION DecompressSequenceBegin(VAR seqID: ImageSequence;desc: ImageDescriptionHandle;
port: CGrafPtr;gdh: GDHandle;VAR srcRect: Rect;matrix: MatrixRecordPtr;
mode: INTEGER;mask: RgnHandle;flags: CodecFlags;accuracy: CodecQ;codec: DecompressorComponent): OSErr;
INLINE $7000+$000D,$AAA3;
FUNCTION DecompressSequenceFrame(seqID: ImageSequence;data: Ptr;inFlags: CodecFlags;
VAR outFlags: CodecFlags;asyncCompletionProc: CompletionProcRecordPtr): OSErr;
INLINE $7000+$000E,$AAA3;
FUNCTION SetDSequenceMatrix(seqID: ImageSequence;matrix: MatrixRecordPtr): OSErr;
INLINE $7000+$0010,$AAA3;
FUNCTION SetDSequenceMatte(seqID: ImageSequence;matte: PixMapHandle;VAR matteRect: Rect): OSErr;
INLINE $7000+$0011,$AAA3;
FUNCTION SetDSequenceMask(seqID: ImageSequence;mask: RgnHandle): OSErr;
INLINE $7000+$0012,$AAA3;
FUNCTION SetDSequenceTransferMode(seqID: ImageSequence;mode: INTEGER;VAR opColor: RGBColor): OSErr;
INLINE $7000+$0013,$AAA3;
FUNCTION SetDSequenceDataProc(seqID: ImageSequence;dataProc: DataProcRecordPtr;
bufferSize: LONGINT): OSErr;
INLINE $7000+$0014,$AAA3;
FUNCTION SetDSequenceAccuracy(seqID: ImageSequence;accuracy: CodecQ): OSErr;
INLINE $7000+$0034,$AAA3;
FUNCTION SetDSequenceSrcRect(seqID: ImageSequence;VAR srcRect: Rect): OSErr;
INLINE $7000+$0035,$AAA3;
FUNCTION GetDSequenceImageBuffer(seqID: ImageSequence;VAR gworld: GWorldPtr): OSErr;
INLINE $7000+$0015,$AAA3;
FUNCTION GetDSequenceScreenBuffer(seqID: ImageSequence;VAR gworld: GWorldPtr): OSErr;
INLINE $7000+$0016,$AAA3;
FUNCTION SetCSequenceQuality(seqID: ImageSequence;spatialQuality: CodecQ;
temporalQuality: CodecQ): OSErr;
INLINE $7000+$0017,$AAA3;
FUNCTION SetCSequencePrev(seqID: ImageSequence;prev: PixMapHandle;VAR prevRect: Rect): OSErr;
INLINE $7000+$0018,$AAA3;
FUNCTION SetCSequenceFlushProc(seqID: ImageSequence;flushProc: FlushProcRecordPtr;
bufferSize: LONGINT): OSErr;
INLINE $7000+$0033,$AAA3;
FUNCTION SetCSequenceKeyFrameRate(seqID: ImageSequence;keyframerate: LONGINT): OSErr;
INLINE $7000+$0036,$AAA3;
FUNCTION GetCSequencePrevBuffer(seqID: ImageSequence;VAR gworld: GWorldPtr): OSErr;
INLINE $7000+$0019,$AAA3;
FUNCTION CDSequenceBusy(seqID: ImageSequence): OSErr;
INLINE $7000+$001A,$AAA3;
FUNCTION CDSequenceEnd(seqID: ImageSequence): OSErr;
INLINE $7000+$001B,$AAA3;
FUNCTION GetCompressedImageSize(desc: ImageDescriptionHandle;data: Ptr;
bufferSize: LONGINT;dataProc: DataProcRecordPtr;VAR dataSize: LONGINT): OSErr;
INLINE $7000+$001C,$AAA3;
FUNCTION GetSimilarity(src: PixMapHandle;VAR srcRect: Rect;desc: ImageDescriptionHandle;
data: Ptr;VAR similarity: Fixed): OSErr;
INLINE $7000+$001D,$AAA3;
FUNCTION GetImageDescriptionCTable(desc: ImageDescriptionHandle;VAR ctable: CTabHandle): OSErr;
INLINE $7000+$001E,$AAA3;
FUNCTION SetImageDescriptionCTable(desc: ImageDescriptionHandle;ctable: CTabHandle): OSErr;
INLINE $7000+$001F,$AAA3;
FUNCTION GetImageDescriptionExtension(desc: ImageDescriptionHandle;VAR extension: Handle;
idType: LONGINT;index: LONGINT): OSErr;
INLINE $7000+$0020,$AAA3;
FUNCTION SetImageDescriptionExtension(desc: ImageDescriptionHandle;extension: Handle;
idType: LONGINT): OSErr;
INLINE $7000+$0021,$AAA3;
FUNCTION FindCodec(cType: CodecType;specCodec: CodecComponent;VAR compressor: CompressorComponent;
VAR decompressor: DecompressorComponent): OSErr;
INLINE $7000+$0023,$AAA3;
FUNCTION CompressPicture(srcPicture: PicHandle;dstPicture: PicHandle;quality: CodecQ;
cType: CodecType): OSErr;
INLINE $7000+$0024,$AAA3;
FUNCTION FCompressPicture(srcPicture: PicHandle;dstPicture: PicHandle;colorDepth: INTEGER;
clut: CTabHandle;quality: CodecQ;doDither: sBoolean;compressAgain: sBoolean;
progressProc: ProgressProcRecordPtr;cType: CodecType;codec: CompressorComponent): OSErr;
INLINE $7000+$0025,$AAA3;
FUNCTION CompressPictureFile(srcRefNum: INTEGER;dstRefNum: INTEGER;quality: CodecQ;
cType: CodecType): OSErr;
INLINE $7000+$0026,$AAA3;
FUNCTION FCompressPictureFile(srcRefNum: INTEGER;dstRefNum: INTEGER;colorDepth: INTEGER;
clut: CTabHandle;quality: CodecQ;doDither: sBoolean;compressAgain: sBoolean;
progressProc: ProgressProcRecordPtr;cType: CodecType;codec: CompressorComponent): OSErr;
INLINE $7000+$0027,$AAA3;
FUNCTION GetPictureFileHeader(refNum: INTEGER;VAR frame: Rect;VAR header: OpenCPicParams): OSErr;
INLINE $7000+$0028,$AAA3;
FUNCTION DrawPictureFile(refNum: INTEGER;VAR frame: Rect;progressProc: ProgressProcRecordPtr): OSErr;
INLINE $7000+$0029,$AAA3;
FUNCTION DrawTrimmedPicture(srcPicture: PicHandle;VAR frame: Rect;trimMask: RgnHandle;
doDither: sBoolean;progressProc: ProgressProcRecordPtr): OSErr;
INLINE $7000+$002E,$AAA3;
FUNCTION DrawTrimmedPictureFile(srcRefnum: INTEGER;VAR frame: Rect;trimMask: RgnHandle;
doDither: sBoolean;progressProc: ProgressProcRecordPtr): OSErr;
INLINE $7000+$002F,$AAA3;
FUNCTION MakeThumbnailFromPicture(picture: PicHandle;colorDepth: INTEGER;
thumbnail: PicHandle;progressProc: ProgressProcRecordPtr): OSErr;
INLINE $7000+$002A,$AAA3;
FUNCTION MakeThumbnailFromPictureFile(refNum: INTEGER;colorDepth: INTEGER;
thumbnail: PicHandle;progressProc: ProgressProcRecordPtr): OSErr;
INLINE $7000+$002B,$AAA3;
FUNCTION MakeThumbnailFromPixMap(src: PixMapHandle;VAR srcRect: Rect;colorDepth: INTEGER;
thumbnail: PicHandle;progressProc: ProgressProcRecordPtr): OSErr;
INLINE $7000+$002C,$AAA3;
FUNCTION TrimImage(desc: ImageDescriptionHandle;inData: Ptr;inBufferSize: LONGINT;
dataProc: DataProcRecordPtr;outData: Ptr;outBufferSize: LONGINT;flushProc: FlushProcRecordPtr;
VAR trimRect: Rect;progressProc: ProgressProcRecordPtr): OSErr;
INLINE $7000+$002D,$AAA3;
FUNCTION ConvertImage(srcDD: ImageDescriptionHandle;srcData: Ptr;colorDepth: INTEGER;
clut: CTabHandle;accuracy: CodecQ;quality: CodecQ;cType: CodecType;codec: CodecComponent;
dstDD: ImageDescriptionHandle;dstData: Ptr): OSErr;
INLINE $7000+$0030,$AAA3;
FUNCTION MakeDitherTable(gdev: GDHandle;VAR ditherTable: DTabHandle): OSErr;
INLINE $7000+$0031,$AAA3;
FUNCTION DisposeDitherTable(ditherTable: DTabHandle): OSErr;
INLINE $7000+$0032,$AAA3;
FUNCTION GetCompressedPixMapInfo(pix: PixMapPtr;VAR desc: ImageDescriptionHandle;
VAR data: Ptr;VAR bufferSize: LONGINT;VAR dataProc: DataProcRecord;VAR progressProc: ProgressProcRecord): OSErr;
INLINE $7000+$0037,$AAA3;
FUNCTION SetCompressedPixMapInfo(pix: PixMapPtr;desc: ImageDescriptionHandle;
data: Ptr;bufferSize: LONGINT;dataProc: DataProcRecordPtr;progressProc: ProgressProcRecordPtr): OSErr;
INLINE $7000+$0038,$AAA3;
FUNCTION GetMatrixType(VAR m: MatrixRecord): INTEGER;
INLINE $7014,$ABC2;
PROCEDURE CopyMatrix(VAR m1: MatrixRecord;VAR m2: MatrixRecord);
INLINE $7020,$ABC2;
FUNCTION EqualMatrix(VAR m1: MatrixRecord;VAR m2: MatrixRecord): BOOLEAN;
INLINE $7021,$ABC2;
PROCEDURE SetIdentityMatrix(VAR matrix: MatrixRecord);
INLINE $7015,$ABC2;
PROCEDURE TranslateMatrix(VAR m: MatrixRecord;deltaH: Fixed;deltaV: Fixed);
INLINE $7019,$ABC2;
PROCEDURE TranslateMatrixTo(VAR m: MatrixRecord;deltaH: Fixed;deltaV: Fixed);
INLINE $701A,$ABC2;
PROCEDURE RotateMatrix(VAR m: MatrixRecord;degrees: Fixed;aboutX: Fixed;
aboutY: Fixed);
INLINE $7016,$ABC2;
PROCEDURE ScaleMatrix(VAR m: MatrixRecord;scaleX: Fixed;scaleY: Fixed;aboutX: Fixed;
aboutY: Fixed);
INLINE $7017,$ABC2;
PROCEDURE SkewMatrix(VAR m: MatrixRecord;skewX: Fixed;skewY: Fixed;aboutX: Fixed;
aboutY: Fixed);
INLINE $7018,$ABC2;
FUNCTION TransformFixedPoints(VAR m: MatrixRecord;VAR fpt: FixedPoint;count: LONGINT): OSErr;
INLINE $7022,$ABC2;
FUNCTION TransformPoints(VAR mp: MatrixRecord;VAR pt1: Point;count: LONGINT): OSErr;
INLINE $7023,$ABC2;
FUNCTION TransformFixedRect(VAR m: MatrixRecord;VAR fr: FixedRect;VAR fpp: FixedPoint): BOOLEAN;
INLINE $7024,$ABC2;
FUNCTION TransformRect(VAR m: MatrixRecord;VAR r: Rect;VAR fpp: FixedPoint): BOOLEAN;
INLINE $7025,$ABC2;
FUNCTION TransformRgn(VAR mp: MatrixRecord;r: RgnHandle): OSErr;
INLINE $7000+$0039,$AAA3;
FUNCTION InverseMatrix(VAR m: MatrixRecord;VAR im: MatrixRecord): BOOLEAN;
INLINE $701C,$ABC2;
PROCEDURE ConcatMatrix(VAR a: MatrixRecord;VAR b: MatrixRecord);
INLINE $701B,$ABC2;
PROCEDURE RectMatrix(VAR matrix: MatrixRecord;VAR srcRect: Rect;VAR dstRect: Rect);
INLINE $701E,$ABC2;
PROCEDURE MapMatrix(VAR matrix: MatrixRecord;VAR fromRect: Rect;VAR toRect: Rect);
INLINE $701D,$ABC2;
PROCEDURE AlignMatrix(VAR mrp: MatrixRecord;VAR srcRect: Rect);
INLINE $701F,$ABC2;
{$ENDC} { UsingImageCompression }
{$IFC NOT UsingIncludes}
END.
{$ENDC}